Template
Page Component
  name
    Page
  description
    A simple module for setting up new pages, with routes, etc., and a consistent look & feel
  user_stories
    - As a developer I would like to quickly configure new pages that handle routing, app/menu toolbar, etc.
  schema:
    props
      -
        name:
          name
        type:
          string
        description:
          The name of this page
      -
        name:
          path
        type:
          string
        description:
          The path to use for the route
      -
        name:
          disableToolbar
        type:
          boolean
        description:
          Whether or not to disable showing the toolbar
      -
        name:
          toolbarItems
        type:
          object
        description:
          The props to pass along to the toolbar
      -
        name:
          toolbarComponent
        type:
          React.FC
        description:
          The component to append to the toolbar. Useful for adding full customization of the toolbar
      -
        name:
          disableAppDrawer
        type:
          boolean
        description:
          Whether or not to disable the app drawer menu
      -
        name:
          appDrawerSettings
        type:
          object
        description:
          The props to pass long to the app drawer
      -
        name:
          tabs
        type:
          object[]
        description:
          The list of tabs and their settings to display under the toolbar
          Renders a <FlexTab />
      -
        name:
          disableTabs
        type:
          boolean
        description:
          Whether or not to disable showing the tabs
      -
        name:
          children
        type:
          JSX.Element
        description:
          The content to place inside the page
    methods
      -
        name:
          setToolbarContent()
        type:
          () => void
        description:
          A method for updating the page's toolbar content.
    hooks
      -
        name:
          onComponentRender('Page')
        description:
          Triggers when a Page renders in the dom
      -
        name:
          onComponentRender('Toolbar')
        description:
          Triggers when a toolbar renders in the dom
      -
        name:
          onComponentRender('AppDrawer')
        description:
          Triggers when the app drawer renders in the dom
      -
        name:
          onListItems('toolbarItems')
        description:
          Triggers when the list of toolbar actions are being generated
      -
        name:
          onListItems('pageTabs')
        description:
          Triggers when the list of page tabs are being generated
  tests:
    Rendering
      - Should render the component in the dom
      - Should be accessible at the url path indicated in the path props
      - Should not render a toolbar when the disableToolbar props is true
      - Should render the component provided in the toolbarComponent props instead of the default toolbar if one is provided
      - Should not render an appDrawer if the disableAppDrawer prop is true
      - Should render the same number of tabs that are in the tabs array
      - Should not render any page tabs if the disableTabs prop is true
      - Should always render children
    Methods
      - Should update the toolbar content if the setToolbarContent() method is ever called
    Events
      - Should trigger the onComponentRender("Page") plugin hook when a Page renders in the dom
      - Should trigger the onComponentRender("Toolbar") plugin hook when a toolbar renders in the dom
      - Should trigger the onComponentRender("AppDrawer") plugin hook when the app drawer renders in the dom
      - Should render the onListItems("toolbarItems") plugin hook when the list of toolbar actions are being generated
      - Should render the onListItems("pageTabs") plugin hook when the list of page tabs are being generated